#include <iostream>


// 静态成员变量属于类，不属于某个对象
// 静态成员由所有该类对象共享
// 静态成员可以直接由类型进行访问
class Test
{
public:
    Test()
    {
        c++;
    }
    ~Test()
    {
        c--;
    }

    
    static void func()
    {
        //静态成员函数不能使用非静态成员变量
        // a++;
        //静态成员函数只能使用静态变量
        std::cout<<"static func()!"<<std::endl;
    }
public:
    int a;
    static int c;
};

//静态成员的初始化 类外定义
int Test::c = 0;

//坐标
class Point
{
private:
    int x;
    int y;
public:
    Point(int x,int y):x(x),y(y){}
    static int DistanceX(int x1,int x2)
    {
        //算法相关
        return x1 - x2;
    }
};


int main()
{
    // Test *t1 = new Test;
    // Test *t2 = new Test;

    // delete t1;

    // //用来统计该类对象的数量
    // std::cout<<Test::c<<std::endl;
    
    // Test t;
    // //静态成员函数的调用不需要依托对象
    // Test::func();
    
    //减少对象构建,简化代码
    Point::DistanceX(1,2);

    return 0;
}